游戏而已
面试
关于面试
技术面试
负责人面试
HR 面试
面试技巧
有高度:宏观思考
- 模块化
- 解耦和
有广度:思维扩散
有低度:底层原理
内存
如何看待面试
什么是面试
面试那些事
面试准备
JD 分析
业务分析或实战模拟
技术站准备
自我介绍
模拟一面
模拟二面
模拟三面
模拟终面
面试者
基层工程师 - 基础知识
高级工程师 - 项目经验
架构师 - 解决方案
面试官
面试流程
面试题
解题思路
分析考题 -- 考点(知识点)和出题者的意图(角度)
提取关键词 -- 考什么、问题角度
整理答题思路
组织答案
给出答案
扩展知识点
扩展问题角度
归纳总结
面试技巧
JS
JS 基础
if (obj.a == null) {
// 这里相当于 obj.a === null || obj.a === undefined
// 这是 jQuery 源码中推荐的写法,其他情况尽量使用 ===
}
function fn(a, b) {
// 这里也相当于 a === null || a === undefined
if (a == null) {}
}原型和原型链
let arr = []
arr instanceof Array // true
typeof arr // object typeof 是无法引用类型的详细类型的
// 仅供学习时使用,真实面试时不建议这样写,最好写一个贴近工作的例子
function Animal () {
this.eat = function () {
console.log('animal eat')
}
}
function Dog () {
this.bark = function () {
console.log('dog bark')
}
}
Dog.prototype = new Animal()
let hashiqi = new Dog()
hashiqi.bark() // 'dog bark'
hashiqi.eat() // 'animal eat'// 实战应用 -- 面试时应该是这样的类似答案
function Elem(id) {
this.elem = document.getElementById(id)
}
Elem.prototype.html = function(val) {
let elem = this.elem
if (val) {
elem.innerHTML = val
return this // 链式操作
} else {
return elem.innerHTML
}
}
Elem.prototype.on = function (type, fn) {
let elem = this.elem
elem.addEventListener(type, fn)
return this // 链式操作
}
let div1 = new Elem('detail-page')
// console.log(div1.html())
div1
.html('<p>hello interviewer</p>')
.on('click', function () {
alert('clicked')
})
.html('<p>javascript</p>')
function Foo(name, age) {
// let this = {} // 有 new 关键字时,默认执行这一行代码
this.name = name
this.age = age
this.class = 'class-1'
// return this // 有 new 关键字时,默认执行这一行代码
}
let foo = new Foo('zhangsan', 20)作用域和闭包
异步和单线程
其他
JS-WEB-API
JS 开发环境
JS 运行环境
网络
互联网的原理是什么?
上网的原理就是请求数据,就是文件传输。
服务器上存放着网页的相关文件,包括HTTP文件、CSS文件、JS文件、图片等。当我们打开浏览器,输入网址,我们的计算机就会对这些文件发出HTTP请求。
服务器收到请求之后,会把这些文件通过HTTP协议,传输到我们的计算机中(保存到了某个临时文件夹中)。这些文件,将在我们计算机本地的浏览器中,进行渲染、呈递。
为什么第二次打开同一个网页,会比第一次快?
什么是 HTTP 协议?
超文本传输协议,Hypertext Transfer Protocol。
这是一个文件的传输协议,我们上网的时候,所有的文件都是通过HTTP这个协议,从服务器上传输到客户的电脑里面的。
什么是网页?
什么是服务器?
什么是浏览器?
对WEB标准以及W3C的理解与认识
介绍一下你对浏览器内核的理解?
主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS引擎则:解析和执行javascript来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
浏览器
浏览器的内核分别是什么?
Cookie 的优缺点
浏览器兼容性问题
要知道典型的IE6兼容问题(面试要问),但是做项目我们兼容到IE8。
浏览器的市场占有率: http://tongji.baidu.com/data/
HTML5浏览器打分:http://html5test.com/results/desktop.html
常见兼容性问题?
png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.
浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}
这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
渐进识别的方式,从总体中逐渐排除局部。
首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。css
.bb{ background-color:#f1ee18;/*所有识别*/ .background-color:#00deff\9; /*IE6、7、8识别*/ +background-color:#a200ff;/*IE6、7识别*/ _background-color:#1e0bd1;/*IE6识别*/ }IE下,可以使用获取常规属性的方法来获取自定义属性,
也可以使用getAttribute()获取自定义属性;
Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性.IE下,even对象有x,y属性,但是没有pageX,pageY属性;
Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。
Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,
可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决.超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
选择器问题
说IE6层面兼容的: 标签选择器、id选择器、类选择器、后代、交集选择器、并集选择器、通配符。
1 p
2 #box
3 .spec
4 div p
5 div.spec
6 div,p
7 *
IE7能够兼容的:儿子选择器、下一个兄弟选择器
1 div>p
2 h3+p
IE8能够兼容的:
1 ul li:first-child
2 ul li:last-child
微型盒子问题
IE6,不支持高小于12px的盒子,任何高小于12px的盒子,在IE6中看都大
1 height: 4px;
2 _font-size: 0;
div{
width: 700px;
height: 4px;
background-color: red;
}
<body>
<div></div>
</body>
div{
width: 700px;
height: 4px;
_font-size: 0;
background-color: red;
}
IE6留了一个后门,就是只要给css属性之前,加上下划线,这个属性就是IE6认识的专有属性。
比如:
解决微型盒子,正确写法:
1 height: 10px; 2 _font-size: 0; 伴生属性。
清除浮动问题
IE6不支持用overflow:hidden;来清除浮动。
解决办法,以毒攻毒。追加一条
1 _zoom:1;
完整写法:
1 overflow: hidden; 2 _zoom:1; 伴生属性。
实际上,_zoom:1;能够触发浏览器hasLayout机制。这个机制,不要深究了,因为就IE6有。我们只需要让IE6好用,具体的实现机制,自行百度。
强调一点, overflow:hidden;的本意,就是溢出盒子的border的东西隐藏,这个功能是IE6兼容的。不兼容的是overflow:hidden;清除浮动的时候。
margin 问题
IE6双倍margin bug
当出现连续浮动的元素,携带和浮动方向相同的margin时,队首的元素,会双倍marign。
解决方案:
1)使浮动的方向和margin的方向,相反。
所以,你就会发现,我们特别喜欢,浮动的方向和margin的方向相反。并且,前端开发工程师,把这个当做习惯了。
1 float: left; 2 margin-right: 40px;
2)使用hack(没必要,别惯着这个IE6)
IE6 bug
双边距 BUG
浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。) #box{ float:left; width:10px; margin:0 0 0 100px;} 这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
png24 位的图片在 iE6 浏览器上出现背景
解决方案是做成PNG8.也可以引用一段脚本处理.
超链接 hover 点击后失效
z-index 问题
png 透明
min-height 最小高度
为什么没有办法定义 1px 左右的宽度容器
3px bug
使用float引起的 使用dislpay:inline -3px
解决办法:
不用管,因为根本就不允许用儿子踹父亲。所以,如果你出现了3px bug,说明你的代码不标准。
IE6,千万不要跟他死磕、较劲,它不配。 格调要高,老师给你讲,就是为了增加面试的成功率。不是为了让你成为IE6的专家。
HTML 问题
什么是纯文本文件?
什么是 HTML?
HTML是HyperText
Markup Language 的缩写,超文本标记语言。
xhtml 和 html 有什么区别
浏览器标准模式和怪异模式之间的区别是什么?
Doctype 作用?标准模式与兼容模式各有什么区别?
(1)、<!DOCTYPE>声明位于HTML文档中的第一行,处于 <html> 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
(2)、标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
HTML5 为什么只需要写 <!DOCTYPE HTML>?
HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
(1)行内元素有:a b span img input select strong(强调的语气)
(2)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
(3)常见的空元素:
<br> <hr> <img> <input> <link> <meta>
鲜为人知的是:
<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>说下行内元素和块级元素的区别?行内块元素的兼容性使用?(IE8 以下)
(Q1) 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。
块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。
(Q2) 兼容性:display:inline-block;*display:inline;*zoom:1;
h1 标签的作用?
标准答案:
<img src="../../photo/1.png" />解释:
现在document是最大的文件夹,里面有两个文件夹work和photo。work中又有一个文件夹叫做myweb。myweb文件夹里面有index.html。 所以index.html在myweb文件夹里面,上一级就是work文件夹,上两级就是document文件夹。通过document文件夹当做一个中转站,进入photo文件夹,看到了1.png。
HTML 标签的分类
HTML标签是分等级的,HTML将所有的标签分为两种:容器级、文本级。
顾名思义,容器级的标签,里面可以放置任何东西;文本级的标签里面,只能放置文字、图片、表单元素。
p 标签是一个文本级标签
p里面只能放文字、图片、表单元素等文本元素。其他的一律不能放。
HTML 文档类型声明种类
a是一个文本级的标签
title 标签
<title>出现在<head>里面,表示页面的标题。直观上,我们可以在浏览器的标题栏(标签栏)中看见。
B正确。
HTML 的本质
HTML只依靠标签对儿表达语义,和是否缩进、换行没有任何关系!只要是标签有正确的嵌套关系,正确的父子关系,那么就是一个合法的HTML结构,不一定要缩进。百度的首页,为了减小文件体积,所以都是没有缩进的。提到HTML的作用,只能从语义方面从想,绝对不能想样式。所以C错误的。D正确。
考察常用属性
1 <img src="1.jpg" />
2 <a href="1.html">点击我</a>
img是image“图像”;
src是source“资源”;
a是anchor“锚”;
href是hypertext reference“超文本地址”
考察HTTP的原理
服务器上有一些文件,html、图片、css、js文件,通过HTTP请求传输到了用户的电脑里面。所以,第二次访问的时候,这些图片就不用传输了(Ajax课上,你将知道这是HTTP 304状态),所以页面变得快。
A,错误,没有所谓的vip通路。
B,正确
C,错误。因为HTTP不是一个持久连接的协议,传完就拉倒了,就关闭连接了,
所以没有一个持续的通路。
D,错误。每次访问,都是不同的寻址过程,不会“记路”。
纯文本
用记事本打开,不是乱码,是可读的,那么一定是纯本文文件。只有文本,没有样式,没有语义。所以,.java文件是纯文本的, .class文件不是纯文本的。所有的纯文本文件都能用记事本、notepad++、editplus、sublime编辑。
考察 XHTML
所有的标签名、属性都要小写,必须使用引号,必须封闭。答案是B
考察定义列表
一定要记住每个标签标示什么,就是英语原意是什么?比如
dl 就是definition list, 定义列表;
dt 就是definition title,定义标题;
dd就是definition description,定义描述
相对路径与绝对路径
1. html中,有一个能够点击的图片。所以骨架:
<a href=""><img src="" /></a>href里面是相对路径,要从1.html出发找到2.html;
src里面也是相对路径,要从1.html出发找到kaola.png。
标准答案:
<a href="../myweb2/2.html" target="_blank"><img src="../../photo/kaola.png" /></a>
我们一直在用的是相对路径,就是从自己出发找到别人。用相对路径的好处很明显,就是站点文件夹可以拷着走。
相对路径的好处:站点不管拷贝到哪里,文件和图片的相对路径关系都是不变的。
相对路径使用有一个前提,就是网页文件和你的图片,必须在一个服务器上。
比如,你现在想插入一个新浪网上的图片,那么就不能用相对路径。就要用绝对路径。
绝对路径非常简单,所有以http://开头的路径,就是绝对路径。
1 <img src="http://i1.sinaimg.cn/dy/deco/2013/0329/logo/LOGO_1x.png" alt="" />
2 <a href="http://www.sohu.com">点击我跳转到搜狐</a>
老师,我的网页在C盘,图片却在D盘,能不能插入呢?
答案: 用相对路径不能,用绝对路径也不能。
注意,可以使用file://来插入,但是这种方法,没有任何意义!因为服务器上没有所谓c盘、d盘。
下面的方法是行的,但是没有任何工程上的意义,这是因为服务器没有盘符,linux系统没有盘符,
<img src="file://C:\Users\Danny\Pictures\明星\1.jpg" alt="" /> 总结一下:
相对路径和绝对路径。
相对路径,就是../ image/ 这种路径。从自己出发,找到别人;
绝对不允许使用file://开头的东西,这个是完全错误的!!
div 是什么?在 div 出现之前做网站用什么布局?
标签上title与alt属性的区别是什么?
H5
什么是H5?
H5为什么这么火?H5是哪一年产生的?H5会火多久?
html5 有哪些新特性
什么叫做响应式?
针对不同屏幕的响应式,UI设计师该做几套设计图?
移除了那些元素?
如何处理 HTML5 新标签的浏览器兼容问题?
IE8/IE7/IE6支持通过document.createElement方法产生的标签,
可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式:
当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架
<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
如何区分 HTML 和 HTML5?
H5 新增了那些表单类型?
什么是语义化的HTML? 语义化的理解?
用正确的标签做正确的事情!
html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;
在没有样式CCS情况下也以一种文档格式显示,并且是容易阅读的。
搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO。
使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。你如何对网站的文件和资源进行优化?期待的解决方案包括:
HTML5的离线储存?
localStorage 长期存储数据,浏览器关闭后数据不丢失;
sessionStorage 数据在浏览器关闭后自动删除。请描述一下 cookies,sessionStorage 和 localStorage 的区别?
cookie在浏览器和服务器间来回传递。 sessionStorage和localStorage不会
sessionStorage和localStorage的存储空间更大;
sessionStorage和localStorage有更多丰富易用的接口;
sessionStorage和localStorage各自独立的存储空间;HTML5的form如何关闭自动完成功能?
给不想要提示的 form 或下某个input 设置为 autocomplete=off。如何实现浏览器内多个标签页之间的通信? (阿里)
调用localstorge、cookies等本地存储方式webSocket如何兼容低浏览器?(阿里)
Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、 基于 multipart 编码发送 XHR 、 基于长轮询的 XHRiframe有那些缺点?
*iframe会阻塞主页面的Onload事件;
*iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript
动态给iframe添加src属性值,这样可以可以绕开以上两个问题。CSS 问题
CSS3有哪些新特性?
介绍一下CSS的盒子模型?
(1)有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 pading;
(2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border).CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?
1.id选择器( # myid)
2.类选择器(.myclassname)
3.标签选择器(div, h1, p)
4.相邻选择器(h1 + p)
5.子选择器(ul > li)
6.后代选择器(li a)
7.通配符选择器( * )
8.属性选择器(a[rel = "external"])
9.伪类选择器(a: hover, li: nth - child)可继承的样式: font-size font-family color, UL LI DL DD DT;不可继承的样式:border padding margin width height ;
优先级就近原则,同权重情况下样式定义最近者为准;
载入样式以最后载入的定位为准;
优先级为:
!important > id > class > tag
important 比 内联优先级高CSS3新增伪类举例:
p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。
p:last-of-type 选择属于其父元素的最后 <p> 元素的每个 <p> 元素。
p:only-of-type 选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。
p:only-child 选择属于其父元素的唯一子元素的每个 <p> 元素。
p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素。
:enabled :disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中。box-sizing常用的属性有哪些?分别有什么作用?
(Q1)box-sizing: content-box|border-box|inherit;
(Q2)content-box:宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框(元素默认效果)。
border-box:元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。
什么是 CSS Hack?
简述一下 src 与 href 的区别
CSS 实现垂直水平居中
如何居中div?如何居中一个浮动元素?
给div设置一个宽度,然后添加margin:0 auto属性
div{ width:200px; margin:0 auto; }居中一个浮动元素
确定容器的宽高 宽500 高 300 的层 设置层的外边距 .div { Width:500px ; height:300px;//高度可以不设 Margin: -150px 0 0 -250px; position:relative;相对定位 background-color:pink;//方便看效果 left:50%; top:50%; }
列出display的值,说明他们的作用。position的值, relative和absolute定位原点是?
1.
block 象块类型元素一样显示。
none 缺省值。象行内元素类型一样显示。
inline-block 象行内元素一样显示,但其内容象块类型元素一样显示。
list-item 象块类型元素一样显示,并添加样式列表标记。
2.
*absolute
生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
*fixed (老IE不支持)
生成绝对定位的元素,相对于浏览器窗口进行定位。
*relative
生成相对定位的元素,相对于其正常位置进行定位。static 默认值。没有定位,元素出现在正常的流中
*(忽略 top, bottom, left, right z-index 声明)。inherit 规定从父元素继承 position 属性的值。
CSS3有哪些新特性?
CSS3实现圆角(border-radius:8px),阴影(box-shadow:10px),
对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)
transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋转,缩放,定位,倾斜
增加了更多的CSS选择器 多背景 rgba一个满屏 品 字布局 如何设计?
经常遇到的CSS的兼容性有哪些?原因,解决方法是什么?
为什么要初始化CSS样式
当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
最简单的初始化方法就是: *{padding: 0; margin: 0;} (不建议)
淘宝的样式初始化:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
h1, h2, h3, h4, h5, h6{ font-size:100%; }
address, cite, dfn, em, var { font-style:normal; }
code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
small{ font-size:12px; }
ul, ol { list-style:none; }
{ text-decoration:none; }
a:hover { text-decoration:underline; }
sup { vertical-align:text-top; }
sub{ vertical-align:text-bottom; }
legend { color:#000; }
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; }
table { border-collapse:collapse; border-spacing:0; }absolute的containing block计算方式跟正常流有什么不同?
position:absolute 和 float 属性的异同
position 跟 display、margin collapse、overflow、float 这些特性相互叠加后会怎么样?
对BFC规范的理解?
(W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。)css定义的权重
以下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,以下例子是演示各种定义的权重值:
/*权重为1*/
div{
}
/*权重为10*/
.class1{
}
/*权重为100*/
#id1{
}
/*权重为100+1=101*/
#id1 div{
}
/*权重为10+1=11*/
.class1 div{
}
/*权重为10+10+1=21*/
.class1 .class2 div{
}
如果权重相同,则最后定义的样式会起作用,但是应该避免这种情况出现解释下浮动和它的工作原理?清除浮动的技巧
(Q1)
(1)父级div定义height。
(2)结尾处加空div标签clear:both。
(3)父级div定义伪类:after和zoom。
(4)父级div定义overflow:hidden。
(5)父级div定义overflow:auto。
(6)父级div也浮动,需要定义宽度。
(7)父级div定义display:table。
(8)结尾处加br标签clear:both。
(Q2) 比较好的是第3种方式,好多网站都这么用。
用过媒体查询,针对移动端的布局吗?
使用 CSS 预处理器吗?喜欢那个?
如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7msdisplay:inline-block 什么时候会显示间隙?(携程)
移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacingmargin 塌陷现象问题
标准文档流中,竖直方向的margin不叠加,以较大的为准。
如果不在标准流,比如盒子都浮动了,那么两个盒子之间没有塌陷现象,margin 可以叠加.
标准流:
<div>
<p class="p1"></p>
<p class="p2"></p>
</div>
*{
margin: 0;
padding: 0;
}
div{
width: 200px;
border: 10px solid red;
/*overflow: hidden;*/
}
.p1{
width: 200px;
height: 100px;
background-color: orange;
margin-bottom: 40px;
/*float: left;*/
}
.p2{
width: 200px;
height: 100px;
background-color: orange;
margin-top: 30px;
/*float: left;*/
}
非标准流:
*{
margin: 0;
padding: 0;
}
div{
width: 200px;
border: 10px solid red;
overflow: hidden;
}
.p1{
width: 200px;
height: 100px;
background-color: orange;
margin-bottom: 40px;
float: left;
}
.p2{
width: 200px;
height: 100px;
background-color: orange;
margin-top: 30px;
float: left;
}
权重问题
权重问题大总结:
1) 先看有没有选中,如果选中了,那么以(id数,类数,标签数)来计权重。谁大听谁的。如果都一样,听后写的为准。
2) 如果没有选中,那么权重是0。如果大家都是0,就近原则。
第1题:
第2题:
第3题:
第4题:
第5题:
第6题:
第7题:红色的。因为css中red写在后面。
第8题:
CSS 盒模型
题目1,说出下面盒子真实占有宽高,并画出盒模型图:
1 div{
2 width: 200px;
3 height: 200px;
4 padding: 10px 20px 30px;
5 padding-right: 40px;
6 border: 1px solid #000;
7 }真实占有宽度 = 200 + 20 + 40 + 1 + 1 = 262px
题目2,说出下面盒子真实占有宽高,并画出盒模型图:
1 div{ 2 width: 200px; 3 height: 200px; 4 padding-left: 10px; 5 padding-right: 20px; 6 padding:40px 50px 60px; 7 padding-bottom: 30px; 8 border: 1px solid #000; 9 } |
padding-left:10px; 和padding-right:20px; 没用,因为后面的padding大属性,层叠掉了他们。
强调一点,padding-left 不是padding-left-width
1 padding-left:10px; √ 2 padding-left-width:30px; × |
第3题,我现在给你盒模型图,请写出代码,试着用最最简单的方法写
width:123px;
height:123px;
padding:20px 40px;
border:1px solid red;
第4题:
width:123px;
height:123px;
padding:20px;
padding-right:40px;
border:1px solid red;
介绍一下box-sizing属性?
清除浮动的几种方式,各自的优缺点
描述 css reset 的作用和用途
CSS 引入的方式有哪些? link 和 @import 的区别是?
(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;
(4)link方式的样式的权重高于@import的权重.
解释css sprites,如何使用
如何让一个盒子居中显示
对BFC规范的理解?
CSS 定位
绝对定位面试题:
答案:
绝对定位的参考点:(不存在已定位的父辈盒子)
如果用top描述,那么定位参考点就是页面的左上角,而不是浏览器的左上角;
如果用bottom描述,那么就是浏览器首屏窗口尺寸,对应的页面的左下角。
JS 问题
介绍js的基本数据类型。
number,string,boolean,object,undefinedjs有哪些内置对象?
数据封装类对象:Object、Array、Boolean、Number 和 String
其他对象:Function、Arguments、Math、Date、RegExp、Error
this对象的理解
this总是指向函数的直接调用者(而非间接调用者);
如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window。
Javascript如何实现继承?
通过原型和构造器["1", "2", "3"].map(parseInt) 答案是多少?
[1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix),其中 radix 表示解析时用的基数。map 传了 3 个 (element, index, array),对应的 radix 不合法导致解析失败。如何创建一个对象? (画出此对象的内存图)
function Person(name, age) {
this.name = name;
this.age = age;
this.sing = function() { alert(this.name) }
}谈谈This对象的理解。
this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。
但是有一个总原则,那就是this指的是调用函数的那个对象。
this一般情况下:是全局对象Global。 作为方法调用,那么this就是指这个对象JavaScript原型,原型链 ? 有什么特点?
事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡?
我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。
事件处理机制:IE是事件冒泡、火狐是 事件捕获;
ev.stopPropagation();
什么是闭包(closure),为什么要用它?
执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,因为say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述.
function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); }
num++;
return sayAlert;
}
var sayAlert = say667();
sayAlert()//执行结果应该弹出的667"use strict";是什么意思 ? 使用它的好处和坏处分别是什么?
如何判断一个对象是否属于某个类?
使用instanceof (待完善)
if(a instanceof Person){
alert('yes');
}new操作符具体干了什么呢?
1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到 this 引用的对象中。
3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
hasOwnPropertyJSON 的了解?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。
{"age":"12", "name":"back"}js延迟加载的方式有哪些?
defer和async、动态创建DOM方式(用得最多)、按需异步载入js说几条写JavaScript的基本规范?
1.不要在同一行声明多个变量。
2.请使用 ===/!==来比较true/false或者数值
3.使用对象字面量替代new Array这种形式
4.不要使用全局函数。
5.Switch语句必须带有default分支
6.函数不应该有时候有返回值,有时候没有返回值。
7.For循环必须使用大括号
8.If语句必须使用大括号
9.for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。ajax 是什么?
jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面模块化怎么做?
[ 立即执行函数](http://benalman.com/news/2010/11/immediately-invoked-function-expression/),不暴露私有成员
var module1 = (function(){
var _count = 0;
var m1 = function(){
//...
};
var m2 = function(){
//...
};
return {
m1 : m1,
m2 : m2
};
})();AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
异步加载的方式有哪些?
(1) defer,只支持IE
(2) async:
(3) 创建script,插入到DOM中,加载完毕后callBack同步和异步的区别?
如何解决跨域问题?
documen.write和 innerHTML的区别
document.write只能重绘整个页面
innerHTML可以重绘页面的一部分
.call() 和 .apply() 的区别?
例子中用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);
注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。
function add(a,b)
{
alert(a+b);
}
function sub(a,b)
{
alert(a-b);
}
add.call(sub,3,1);Jquery与jQuery UI 有啥区别?
*jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。
*jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。
提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等JQuery的源码看过吗?能不能简单说一下它的实现原理?
jquery 中如何将数组转化为json字符串,然后再转化回来?
jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩展:
$.fn.stringifyArray = function(array) {
return JSON.stringify(array)
}
$.fn.parseArray = function(array) {
return JSON.parse(array)
}
然后调用:
$("").stringifyArray(array)针对 jQuery 的优化方法?
*基于Class的选择性的性能相对于Id选择器开销很大,因为需遍历所有DOM元素。
*频繁操作的DOM,先缓存起来再操作。用Jquery的链式调用更好。
比如:var str=$("a").attr("href");
*for (var i = size; i < arr.length; i++) {}
for 循环每一次循环都查找了数组 (arr) 的.length 属性,在开始循环的时候设置一个变量来存储这个数字,可以让循环跑得更快:
for (var i = size, length = arr.length; i < length; i++) {}JavaScript中的作用域与变量声明提升?
如何编写高性能的Javascript?
那些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)JQuery一个对象可以同时绑定多个事件,这是如何实现的?
如何判断当前脚本运行在浏览器还是node环境中?(阿里)
通过判断Global对象是否为window,如果不为window,当前脚本没有运行在浏览器中eval是做什么的?
它的功能是把对应的字符串解析成JS代码并运行;
应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
由JSON字符串转换为JSON对象的时候可以用eval,var obj =eval('('+ str +')')。null,undefined 的区别?
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
undefined:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
写一个通用的事件侦听器函数。
// event(事件)工具集,来源:github.com/markyun
markyun.Event = {
// 页面加载完成后
readyEvent : function(fn) {
if (fn==null) {
fn=document;
}
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = fn;
} else {
window.onload = function() {
oldonload();
fn();
};
}
},
// 视能力分别使用dom0||dom2||IE方式 来绑定事件
// 参数: 操作的元素,事件名称 ,事件处理程序
addEvent : function(element, type, handler) {
if (element.addEventListener) {
//事件类型、需要执行的函数、是否捕捉
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, function() {
handler.call(element);
});
} else {
element['on' + type] = handler;
}
},
// 移除事件
removeEvent : function(element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.datachEvent) {
element.detachEvent('on' + type, handler);
} else {
element['on' + type] = null;
}
},
// 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
stopPropagation : function(ev) {
if (ev.stopPropagation) {
ev.stopPropagation();
} else {
ev.cancelBubble = true;
}
},
// 取消事件的默认行为
preventDefault : function(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
// 获取事件目标
getTarget : function(event) {
return event.target || event.srcElement;
},
// 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
getEvent : function(e) {
var ev = e || window.event;
if (!ev) {
var c = this.getEvent.caller;
while (c) {
ev = c.arguments[0];
if (ev && Event == ev.constructor) {
break;
}
c = c.caller;
}
}
return ev;
}
};JS 的同源策略
定时器注意问题
alert(1);
setTimeout("alert(2)",0);
alert(3);
var num = 10;
alert(num);
num = 20;
setTimeout("alert(num)",0);
num = 30;
alert(num);
var num = 10;
alert(num);
num = 20;
setTimeout("alert(num)",0);
for (var i=0;i<1000;i++){console.log(i)}
num = 30;
运算符问题
算数运算符
var a=10,b=20,c=30;
a++;
++a;
var e=++a+(++b)+(c++)+a++;
alert(e);
var a=10,b=20,c=30;
a++;
++a;
var e=++a+(++b)+(c++)+(a++);
alert(e);
逻辑运算符
console.log("a&&b a为假,则返回a;a为真,则返回b");
var a = 0&&1;
console.log(a); // 0
var b = 1&&0;
console.log(b); // 0
var c = 1&&10;
console.log(c); // 10
var d = 1 && 2 && 3;
console.log(d); // 3
var e = 0 && 1 && 2;
console.log(e); // 0
var f = 1 && 0 && 2;
console.log(f); // 0
console.log("===============");
console.log("a||b a为假,则返回b;a为真,则返回a ");
console.log(0||1); // 1
console.log(1||0); // 1
console.log(1||5); // 1
console.log(5||1); // 5
var g = 0 || 1 || 2;
console.log(g); // 1
var h = 1 || 0 || 3;
console.log(h); // 1
console.log("===============");
console.log("&& 的运算级别 比 || 高:");
var i = 3 && 0 || 2;
console.log(i); // 2
var j = 3 || 0 && 2;
console.log(j); // 3
var k = 0 || 2 && 3;
console.log(k); // 3
call 和 apply 的区别
apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。
如:function.apply(this,[1,2,3]);
call()的第一个参数是上下文,后续是实例传入的参数序列。
如:function.call(this,1,2,3);
事件委托是什么
闭包的理解
闭包是什么,有什么特性,对页面有什么影响
解释jsonp的原理,以及为什么不是真正的ajax
编写一个在一组数据中求最大值的函数
编写一个数组去重的方法
函数声明提升和变量声明提升问题
答案:9, 9, 9, 9, 9, 报错(Uncaught ReferenceError: a is not defined)本题考查函数声明提升和变量申明提升
关键点:函数执行时,函数内部的变量优先级高于函数外部的变量函数内部变量声明提升:只提升变量的申明,不提升变量的值var a=b=c=9; 不等于 var a=9, b=9, c=9;函数若未经调用,则函数内部定义的全局变量不能被外部访问函数体内部用 var 声明的变量,不管函数调用与否,函数体外部都不能访问未声明就被赋值的变量为全局变量
解析:
函数 f1 是一个全局函数,会被提升到代码顶部;
函数 f1 中的 var a=b=c=9;
相当于var a = 9; // 局部变量,函数 f1 调用时才会被提升到 函数内部代码顶部
b=9; // 全局变量,函数调用时才会被读取
c=9; // 全局变量,函数调用时才会被读取
var a = 9, b = 9, c = 9; 相当于var a = 9;var b = 9;var c = 9;
故图中的代码执行顺序依次是:先执行函数 f1,控制台依次输出 9,9,9
执行完函数 f1 后,该函数体内部声明的全局变量 b=9 , c=9 被暴露,可以被外部访问,而函数体内用 var 声明的局部变量不能被函数体外部访问再依次执行 console.log(c),console.log(b),console.log(a),依次输出9,9,报错(Uncaught ReferenceError: a is not defined)
原代码
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a=b=c=9;
console.log(a);
console.log(b);
console.log(c);
}
结果
原代码
console.log(c);
console.log(b);
console.log(a);
f1();
function f1() {
var a=b=c=9;
console.log(a);
console.log(b);
console.log(c);
}
结果
原代码
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a=9,b=9,c=9;
console.log(a);
console.log(b);
console.log(c);
}
结果
console.log(c);
console.log(b);
console.log(a);
f1();
function f1() {
var a=9,b=9,c=9;
console.log(a);
console.log(b);
console.log(c);
}
结果
2. 下图中输出的结果是?
答案:undefined考查变量的优先级
关键点:函数执行时,函数内部的变量优先级高于函数外部的变量函数变量申明提升:只提升变量的申明,不提升变量的值
解析:
该段代码中全局变量有:num = 10
全局函数有:fun()在函数 fun() 中重新申明了变量 num = 20,但不在函数内部代码的头部,需要进行变量申明提升,即此时 var num; ,没有值的变量,默认值为 undefined,故调用函数的结果为 undefined
源代码
var num = 10;
fun();
function fun() {
console.log(num);
var num = 20;
}
结果:undefined
源代码
var num = 10;
fun();
function fun() {
console.log(num);
}
结果:10
源代码
var num = 10;
fun();
function fun() {
var num = 20;
console.log(num);
}
结果:20
3.下图中输出结果是?
答案:undefined,9
源代码
var a=18;
f1();
function f1() {
var b=9;
console.log(a);
console.log(b);
var a='123';
}
结果
函数相关问题
将一个变量放在外面和放在函数中的区别
”==”和“===”的不同
函数有什么用?
简单说下你对函数的了解
简单说下你对面向对象的理解
简单说下你对原型链的理解
简述你对JS中继承的理解
网站优化
你如何对网站的文件和资源进行优化?期待的解决方案包括:
网络通信 -- http
GET和POST的区别?
HTTP状态码知道哪些?
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
数据传送
XML和JSON的区别?
JS 字面量和 JS 对象的关系
JS 对象字面量、JSON 对象、JSON 字符串、JSON 协议、XML 协议
对象字面量表示法和 JavaScript Object Notation(JSON)是不同的。虽然他们看起来相似,不同点有:
- JSON 只允许
"property": valuesyntax形式的属性定义。属性名必须用双引号括起来。且属性定义不允许使用简便写法。 - JSON中,属性的值仅允许字符串,数字,数组,
true,false,null或其他(JSON)对象。 - JSON中,不允许将值设置为函数。
-
Date等对象,经JSON.parse()处理后,会变成字符串。 JSON.parse()不会处理计算的属性名,会当做错误抛出。
var objectLiteral = {
name: "Objector.L",
age: "24",
special: "JavaScript",
sayName: function() {
return this.name;
}
};var jsonFormat = {
"summary": "Blogs",
"blogrolls": [
{
"title": "Explore JavaScript",
"link": "http://example.com/"
},
{
"title": "Explore JavaScript",
"link": "http://example.com/"
}
]
};JSON.stringify(obj) // 将JSON转为字符串
通过eval() 函数可以将JSON字符串转化为对象
JSON.parse(string) // 将字符串转为JSON对象
XML 协议 和 JSON 协议
node.js
node.js 的适用场景?
高并发、聊天、实时消息推送其他
做一个网页设计师或者前端工程师,平常访问学习的IT网站都有哪些?
- W3Cschool
- segmentFault
- csdn
- 知乎论坛
- 博客园
- github
- 慕课网
- 中国慕课网
切图工程师、前端工程师、UI设计师、美工、网页设计师区别是什么?
什么是前端工程师?什么是后端工程师?
什么是静态网页?什么叫做动态网页?
前端语言有哪些?后端语言有哪些?
做一个网站的团队都需要哪些人?
简述同步和异步的区别
线程与进程的区别
一个程序至少有一个进程,一个进程至少有一个线程。
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
你遇到过比较难的技术问题是?你是如何解决的?
常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
页面重构怎么操作?
列举IE 与其他浏览器不一样的特性?
哪些常见操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)。
99%的网站都需要被重构是那本书上写的?
什么叫优雅降级和渐进增强?
优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。
渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。
WEB应用从服务器主动推送Data到客户端有那些方式?
对Node的优点和缺点提出了自己的看法?
*(优点)因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求,
因此构建在Node上的代理服务器相比其他技术实现(如Ruby)的服务器表现要好得多。
此外,与Node代理服务器交互的客户端代码是由javascript语言编写的,
因此客户端和服务器端都用同一种语言编写,这是非常美妙的事情。
*(缺点)Node是一个相对新的开源项目,所以不太稳定,它总是一直在变,
而且缺少足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子。你有哪些性能优化的方法?
(看雅虎14条性能优化原则)。
(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
(2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
(3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
(4) 当需要设置的样式很多时设置className而不是直接操作style。
(5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
(6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。
(7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。
(8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢。
对普通的网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。程序优化永远要优化慢的部分,换语言是无法“优化”的。http状态码有那些?分别代表是什么意思?
100-199 用于指定客户端应相应的某些动作。
200-299 用于表示请求成功。
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
400-499 用于指出客户端的错误。400 1、语义有误,当前请求无法被服务器理解。401 当前请求需要用户验证 403 服务器已经理解请求,但是拒绝执行它。
500-599 用于支持服务器错误。 503 – 服务不可用一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)
查找浏览器缓存
DNS解析、查找该域名对应的IP地址、重定向(301)、发出第二个GET请求
进行HTTP协议会话
客户端发送报头(请求报头)
服务器回馈报头(响应报头)
html文档开始下载
文档树建立,根据标记请求所需指定MIME类型的文件
文件显示
[
浏览器这边做的工作大致分为以下几步:
加载:根据请求的URL进行域名解析,向服务器发起请求,接收文件(HTML、JS、CSS、图象等)。
解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,建议相应的内部数据结构(比如HTML的DOM树,JS的(对象)属性表,CSS的样式规则等等)
}除了前端以外还了解什么其它技术么?你最最厉害的技能是什么?
你常用的开发工具是什么,为什么?
对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
前端是最贴近用户的程序员,比后端、数据库、产品经理、运营、安全都近。
1、实现界面交互
2、提升用户体验
3、有了Node.js,前端可以实现服务端的一些事情前端是最贴近用户的程序员,前端的能力就是能让产品从 90分进化到 100 分,甚至更好,
参与项目,快速高质量完成实现效果图,精确到1px;
与团队成员,UI设计,产品经理的沟通;
做好的页面结构,页面重构和用户体验;
处理hack,兼容、写出优美的代码格式;
针对服务器的优化、拥抱最新前端技术。加班的看法?
加班就像借钱,原则应当是------救急不救穷平时如何管理你的项目?
先期团队必须确定好全局样式(globe.css),编码模式(utf-8) 等;
编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);
标注样式编写人,各模块都及时标注(标注关键样式调用的地方);
页面进行标注(例如 页面 模块 开始和结束);
CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);
JS 分文件夹存放 命名以该JS功能为准的英文翻译。
图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理如何设计突发大规模并发架构?
说说最近最流行的一些东西吧?常去哪些网站?
Node.js、Mongodb、npm、MVVM、MEAN、three.js移动端(Android IOS)怎么做好用户体验?
清晰的视觉纵线、信息的分组、极致的减法、
利用选择代替输入、标签及文字的排布方式、
依靠明文确认密码、合理的键盘利用、你在现在的团队处于什么样的角色,起到了什么明显的作用?
你认为怎样才是全端工程师(Full Stack developer)?
介绍一个你最得意的作品吧?
你的优点是什么?缺点是什么?
如何管理前端团队?
最近在学什么?能谈谈你未来3,5年给自己的规划吗?
想问公司的问题?
问公司问题:
目前关注哪些最新的Web前端技术(未来的发展方向)?
前端团队如何工作的(实现一个产品的流程)?
公司的薪资结构是什么样子的?